前一天學習了 if / else 條件判斷,讓記帳程式可以根據消費金額顯示不同的提醒。
今天要繼續增加一個新功能:消費分類選擇。
之前每次記帳時,都要自己輸入「飲食」、「交通」、「購物」等文字。今天想把它改成選單,讓使用者只要輸入數字,就可以選擇消費分類。
這次會使用 Java 的 switch。
什麼是 switch?
switch 可以根據一個變數的不同值,執行不同的程式。
基本寫法像這樣:
switch (變數) {
case 1:
// 選擇 1 時執行
break;
case 2:
// 選擇 2 時執行
break;
default:
// 都不符合時執行
}
例如:
int choice = 1;
switch (choice) {
case 1:
System.out.println("飲食");
break;
case 2:
System.out.println("交通");
break;
default:
System.out.println("其他");
}
當 choice 是 1 時,就會輸出:
飲食
break 是什麼?
今天第一次看到 break。
在 switch 裡面,break 可以讓程式執行完目前的 case 之後離開 switch。
例如:
case 1:
category = "飲食";
break;
當使用者選擇 1,設定完「飲食」之後,就不會繼續執行下面其他的 case。
今天的小實作:建立消費分類選單
今天把記帳程式改成讓使用者選擇分類:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("===== 個人記帳系統 =====");
System.out.print("請輸入消費項目:");
String item = scanner.nextLine();
System.out.print("請輸入消費金額:");
int amount = scanner.nextInt();
System.out.println();
System.out.println("請選擇消費分類:");
System.out.println("1. 飲食");
System.out.println("2. 交通");
System.out.println("3. 購物");
System.out.println("4. 娛樂");
System.out.print("請輸入選項:");
int choice = scanner.nextInt();
String category;
switch (choice) {
case 1:
category = "飲食";
break;
case 2:
category = "交通";
break;
case 3:
category = "購物";
break;
case 4:
category = "娛樂";
break;
default:
category = "其他";
}
System.out.println();
System.out.println("===== 記帳完成 =====");
System.out.println("消費項目:" + item);
System.out.println("消費金額:" + amount + " 元");
System.out.println("消費分類:" + category);
if (amount >= 1000) {
System.out.println("消費提醒:這是一筆較高的支出!");
} else {
System.out.println("消費提醒:這是一筆一般消費。");
}
scanner.close();
}
}
執行結果
例如今天買了一杯咖啡:
===== 個人記帳系統 =====
請輸入消費項目:咖啡
請輸入消費金額:80
請選擇消費分類:
===== 記帳完成 =====
消費項目:咖啡
消費金額:80 元
消費分類:飲食
消費提醒:這是一筆一般消費。
這次我沒有直接輸入「飲食」,而是輸入數字 1,程式就會透過 switch 自動把分類設定成「飲食」。
如果輸入的數字不是 1~4,例如:8
就會執行 default:
消費分類:其他
switch 和 if / else 有什麼不同?
昨天使用的 if / else 比較適合判斷條件,例如:
if (amount >= 1000)
可以判斷金額是否超過 1000 元。
今天的 switch 則很適合處理「固定選項」。
例如記帳系統中的:
1 → 飲食
2 → 交通
3 → 購物
4 → 娛樂
所以實際寫程式時,可以根據不同的情況選擇使用 if / else 或 switch。
Day 5 學習心得
今天學習了 Java 的 switch 多重判斷,也第一次把消費分類做成選單。
比起之前直接輸入分類名稱,現在只需要輸入數字就可以選擇分類,使用起來比較方便,也讓記帳程式越來越像真正可以操作的系統。
另外,今天也了解 switch、case、break 和 default 的用途。前幾天學到的 Scanner、變數和 if / else 也都繼續用在今天的程式裡,開始慢慢感覺到每一天學的內容其實都是連在一起的。